/*********************************************
 * @autheur : CHOLLET Clément                *
 * @date    : 03.04.2013                     *
 * @version : 1.0 - Création de la classe    *
 *********************************************/

#include "gestionnairelumieres.h"

//-----------------------------------------------------Constructeurs et destructeurs-----------------------------------------------------//

GestionnaireLumieres GestionnaireLumieres::_instance = GestionnaireLumieres();

/****************************************************************************
 * Constructeur avec paramètres                                             *
 * On initialise chaque lumière du tableau                                  *
 ****************************************************************************/
GestionnaireLumieres::GestionnaireLumieres()
{
    initialise = false;
}


//---------------------------------------------------------------Méthodes----------------------------------------------------------------//
void GestionnaireLumieres::initialiser()
{
    _tabLumieres[0] = new Lumiere(GL_LIGHT0);
    _tabLumieres[1] = new Lumiere(GL_LIGHT1);
    _tabLumieres[2] = new Lumiere(GL_LIGHT2);
    _tabLumieres[3] = new Lumiere(GL_LIGHT3);
    _tabLumieres[4] = new Lumiere(GL_LIGHT4);
    _tabLumieres[5] = new Lumiere(GL_LIGHT5);
    _tabLumieres[6] = new Lumiere(GL_LIGHT6);
    _tabLumieres[7] = new Lumiere(GL_LIGHT7);
}

//---------------------------------------------------------------Accesseurs--------------------------------------------------------------//

/*************************************************************************************
 * On renvoie l'unique instance de la classe GestionnaireLumiere                     *
 * @return GestionnaireLumiere : instance courante de la classe Gestionnaire Lumiere *
 *************************************************************************************/
GestionnaireLumieres& GestionnaireLumieres::getInstance()
{
    if(!initialise)
    {
        initialiser();
        initialise = true;
    }
    return _instance;
}

/*************************************************************************************
 * On renvoie l'unique instance de la classe GestionnaireLumiere                     *
 * @return GestionnaireLumiere : instance courante de la classe Gestionnaire Lumiere *
 *************************************************************************************/
Lumiere& GestionnaireLumieres::getLumiere(GLint numero)
{
    return *_tabLumieres[numero];
}

//------------------------------------------------------Surcharge des opérateurs---------------------------------------------------------//


